import matplotlib.pyplot as plt
import numpy as np

file_name = r"C:\Users\a1831\Documents\WeChat Files\wxid_3aslh5rbae2m21\FileStorage\File\2025-05\葛洲坝14号机\变负荷_[001]有功,0_[001]上导摆度+X_波形.txt"


# 使用更高效的方式读取数据
def load_data(filename, downsample_factor=1):
    times = []
    data = []
    with open(filename, 'r') as f:
        for i, line in enumerate(f):
            # 跳过可能的空行
            if not line.strip():
                continue

            # 高效分割数据
            parts = line.strip().split('\t')
            # if len(parts) < 2:
            #     continue

            # 降采样：每隔downsample_factor个点取一个

            times.append(float(parts[0]))
            data.append(float(parts[-1]))
    return np.array(times), np.array(data)


# 调整绘图参数提升性能
def optimized_plot(x, y):
    plt.figure(figsize=(10, 6))

    # 使用优化参数：
    line = plt.plot(x, y,
                    linewidth=0.5,  # 更细的线条
                    antialiased=False,  # 关闭抗锯齿
                    rasterized=True  # 启用栅格化
                    )[0]

    # 设置轴标签
    plt.xlabel("Time (s)", fontsize=10)
    plt.ylabel("stress (μm)", fontsize=10)

    # 优化坐标轴显示
    plt.tick_params(axis='both', which='both', labelsize=8)
    plt.grid(alpha=1)  # 更淡的网格线 alpha代表网格线的重度，越小代表网格线越轻，值域0-1

    # 自动调整布局
    plt.tight_layout()

    # 启用交互模式缩放
    plt.show(block=True)


if __name__ == "__main__":
    # 加载数据时进行10倍降采样（可根据需要调整）
    time_array, data_array = load_data(file_name, downsample_factor=10)

    # 执行优化后的绘图
    optimized_plot(time_array, data_array)